package _4lists.src.stack;


/**
 * @className: arrayStack
 * @description:
 * @author: myself
 * @date: 2025/7/24 15:29
 * @version: 0.1
 * @since: JDK17
 */

public class arrayStack<E> {
    private E[] array;
    private int top;

    public arrayStack(int capacity) {
        this.array = (E[]) new Object[capacity];
    }

    //判断是否为空
    public boolean isEmpty() {
        return top == 0;
    }

    //判断是否已满
    public boolean isFull() {
        return top==array.length;
    }

    //向栈顶添加元素
    public boolean push(E value) {
        if (isFull()) {
            return false;
        }
        array[top++] = value;//添加数据，移动指针，此时top对应的位置没有值，top-1对应的值是栈顶的值
        return true;
    }

    //查看栈顶元素
    public E peek() {
        if (isEmpty()) {
            return null;
        }
        E value = array[top-1];//记住要进行top-1
        return value;
    }

    //查看并且去除栈顶元素
    public E pop() {
        if (isEmpty()) {
            return null;
        }
        /*E val = array[top-1];//记住要进行top-1，此时还没有进行了删除操作
        top--;//进行删除操作*/
        E val = array[--top];//上面的等价于这个
        return val;
    }
}
